""""""
"""
正则表达式
正则表达式,又称为规则表达式. 使用单个字符串来描述 匹配 某个句子规则的字符串, 常被用于检索 替换那些符合某个模式(规则)的文本

简单来说,正则表达式就是使用: 字符串定义规则,并通过规则去检验字符串是否匹配
比如,验证一个字符串,是否 是符合条件的电子邮箱地址, 只要匹配好正则, 即可匹配任意邮箱
比如通过正则规则: (^[\w-]+(\.[\w-]+)*[\w-]+(\.[\w-]+)+$)  即可匹配一个字符串是否符合邮箱标准格式

但如果不使用正则,使用If else 来对字符串做判断就非常困难了
"""
"""
正则的三个基础方法
Python正则表达式使用 re 模块, 并基于 re 模块中三个基础方法来做正则匹配
分别是 match search findall  三个基础方法
"""

"""
re.match  (匹配规则，被匹配字符串)
从被匹配字符串 开头进行匹配, 匹配成功 返回匹配对象 (包含 匹配的信息) 匹配不成功返回空
"""
import re

字符串 = "孙新罡 python 孙新罡 python 孙新罡 python 孙新罡 python "

匹配 = re.match("孙新罡", 字符串)  # 在变量里 匹配规则  必须完全匹配
print(匹配)  # 看输出可以,看出 变量是个类对象,并且带2个值
print(匹配.span())  # (0, 3) 这里是下标0到3,但不包括3
print(匹配.group())  # "孙新罡" 这个输出的是 如果匹配成功这个值是什么    就是要匹配的规则
print()

匹配1 = re.match("python", 字符串)  # 在变量里 匹配规则  必须完全匹配
print(f"这里是空: {匹配1}\n")  # None   代表什么的匹配没有成功, 因为是从开头匹配,所以可以匹配到

# 从上的代码,输出情况可以看出   match 是从开头匹配,注意这个 从开头匹配,只是开头

"""
search 方法
搜索整个字符串，找出匹配的.  从前向后,找到第一个后,就停止. 不会继续向后
整个字符串都找不到,返回空 None
"""
print("-------search 方法--------\n")
字符串 = "孙新罡 python 孙新罡 python 孙新罡 python 孙新罡 python "

匹配信息 = re.search("python", 字符串)  # 匹配规则  在哪里找   注意要完全匹配
print(匹配信息)  # 变量是个类对象,并且带2个值
print(匹配信息.span())  # (4, 10) 这里是下标4到10,但不包括10
print(匹配信息.group())  # "python" 这个输出的是 如果匹配成功这个值是什么    就是要匹配的规则
print()

字符串 = "孙新罡  孙新罡  孙新罡  孙新罡  "
匹配信息1 = re.search("python", 字符串)  # 匹配规则  在哪里找
print(匹配信息1)  # 没有找到如何匹配 返回空
print()


"""
re.findall  方法
匹配全部字符串,找到全部的匹配项

找不到然后匹配,返回 空列表
"""
print("-------findall 方法--------\n")
字符串 = "孙新罡 python 孙新罡1 python 孙新罡 python 孙新罡1 python "
匹配信息2 = re.findall("孙新罡1", 字符串)
print(匹配信息2)  # 返回列表 找到多少个匹配项目,列表就有多少给元素

匹配信息3 = re.findall("问问", 字符串)
print(匹配信息3)  # 没有任何匹配返回 空列表
print()
